package otSpaces.util;

import java.util.HashMap;

/**
 * Converts between bytes and enums
 * 
 * @author Peter LaValle
 * 
 */
public class OrdinalBytes {

	public static byte ordinalByte(Enum<?> t) {
		final int ordinalInt = t.ordinal();

		if (ordinalInt > Byte.MAX_VALUE || ordinalInt < Byte.MIN_VALUE) {
			throw new IndexOutOfBoundsException();
		} else {
			return (byte) ordinalInt;
		}
	}

	private final HashMap<Byte, Enum<?>> _ordinalBytes = new HashMap<Byte, Enum<?>>();

	public OrdinalBytes(Enum<?>[] types) {
		for (Enum<?> type : types) {
			_ordinalBytes.put(ordinalByte(type), type);
		}
	}

	public Enum<?> valueOf(final byte ordinalByte) {
		return _ordinalBytes.get(ordinalByte);
	}

}
